/**
 * 准备state——用于存储数据
 * 准备getters——用于将state中的数据进行加工
 * 准备mutations——用于操作数据（state）
 */
import {login} from "../api/login/index";
import {setStorageSync} from "../utils/storage"

export interface LoginOptions {
  onUserInfoLoaded: () => void
}

export class Login {
  motto: string
  userInfo: any
  options: LoginOptions
  constructor(options: LoginOptions) {
    this.motto = "Hello World";
    this.userInfo = {
      username:"admin",
      password:"admin"
    };
    this.options = options;
    
  }
  /**
   * 处理登陆
   */
  async HandleLogin(){
    await login({username:this.userInfo.username,password:this.userInfo.password}).then(res=>{
      console.log(res);
      let {code,data,message}=res;
      if(code===200){
        setStorageSync("user_token",data.user_token);
        wx.showToast({
          title:"登陆成功"
        })
        wx.navigateTo({
          url:"/pages/index/index"
        })
      }
    })
  }

  /**
   * 
   */

  handleinputInfo(e: { detail: { value: any; }; }){
    
    

    const key = e.currentTarget.dataset.key; // 获取data-key的值  
    const value = e.detail.value; // 获取输入框的值  
    this.userInfo={
      ...this.userInfo, 
      [key]: value // 使用计算属性名来更新对应的数据属性  
    };
    //调用子类的构造方法---login
    this.options.onUserInfoLoaded && this.options.onUserInfoLoaded();
    console.log("被调用了",this.userInfo);
  }
  getUserProfile() {
    // 推荐使用wx.getUserProfile获取用户信息，开发者每次通过该接口获取用户个人信息均需用户确认，开发者妥善保管用户快速填写的头像昵称，避免重复弹窗
    wx.getUserProfile({
      desc: "展示用户信息", // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
      success: (res) => {
        this.userInfo = res.userInfo;
        this.options.onUserInfoLoaded && this.options.onUserInfoLoaded();
      },
    });
  }
}